import cv2
import numpy as np
import os

# 图像文件夹路径
image_dir = 'D:\数字\shufa_train'

# 确保image_dir存在
if not os.path.exists(image_dir):
    print(f"目录不存在: {image_dir}")
else:
    # 获取所有图像文件，假设文件名是数字且以.jpg结尾
    image_files = [f for f in os.listdir(image_dir) if f.endswith('.jpg') and f.isdigit()]

    # 打印文件列表进行调试
    print(image_files)

    # 确保列表不为空再访问第一个元素
    if image_files:
        # 读取第一个图像文件以确定图像大小
        sample_image = cv2.imread(os.path.join(image_dir, image_files[0]))
        if sample_image is not None:
            # 计算每个汉字图像的宽度和高度
            char_height, char_width = sample_image.shape[:2]

            # 创建一个新图像作为画布
            canvas = np.zeros((10 * char_height, 10 * char_width, 3), dtype=np.uint8)

            # 按顺序加载每个图像并将其粘贴到画布上
            for idx, file_name in enumerate(image_files):
                # 计算网格中的位置
                row_idx = idx // 10
                col_idx = idx % 10
                file_path = os.path.join(image_dir, file_name)

                # 读取每个图像文件
                img = cv2.imread(file_path)
                if img is not None:
                    # 将图像粘贴到画布上
                    start_x = col_idx * char_width
                    start_y = row_idx * char_height
                    canvas[start_y:start_y + char_height, start_x:start_x + char_width] = img
                else:
                    print(f"无法加载图像: {file_path}")

            # 显示画布图像
            cv2.imshow('Canvas with Characters', canvas)
            cv2.waitKey(0)
            cv2.destroyAllWindows()
        else:
            print("无法读取图像文件或文件不是有效的图像格式。")
    else:
        print("没有找到图像文件。")
print(os.listdir(image_dir))
image_files = [f for f in os.listdir(image_dir) if f.endswith('.jpg')]
print(f"Image尺寸: {sample_image.shape[:2]}")